//============================================================================
// Name        : TCPSocket.cpp
// Author      : O.M.A.V.
// Description : De implementation file van de TCPSocket
//============================================================================

#include "TCPSocket.h"

/////////////////////
// (DE)CONSTRUCTOR //
/////////////////////

/*
* Maak een nieuwe socket
*
* portNumber:		Poort waar de socket moet gaan luisteren voor
* 					binnenkomende verbindingen
* QueueLength:		Maximale aantal toegestaande verbindingen
*/
TCPSocket::TCPSocket(unsigned short int portNumber, int QueueLength)
{
	cout << "socket gemaakt" << endl;
	// Maak nieuwe socket
	mainSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

	// Socket maken niet gelukt
	if(mainSocket < 0)
	{
		throwError("Kan socket niet maken!");
	}
	// Socket maken wel gelukt
	else
	{
		// bind en listen
	}
}

/*
 * Sluit de socket;
 */
TCPSocket::~TCPSocket() {
	// TODO Auto-generated destructor stub
}

//////////////////////
// PUBLIC FUNCTIONS //
//////////////////////

///////////////////////
// PRIVATE FUNCTIONS //
///////////////////////

/*
 * Toon error en sluit applicatie
 */
void TCPSocket::throwError(const char msg[]) const
{
	perror(msg);
	exit(1);
}

/*
 * bind main socket
 */
void TCPSocket::bindSocket(unsigned short int portNr)
{
	// Set socket info
	sockaddr_in localInfo;
	localInfo.sin_family = AF_INET;
	localInfo.sin_addr.s_addr = inet_addr("10.110.110.131");
	localInfo.sin_port = portNr;

	// Bind socket
	int error = bind(mainSocket, (sockaddr *) &localInfo, sizeof(sockaddr_in));

	// Check errors
	if (error < 0)
	{
		throwError("Kan socket niet binden!");
	}
}
